﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using middleware.utiles;
using System.IO;
using System.Xml;
using System.Windows.Forms;

namespace middleware.salidaXml
{
    class BandejaSalidaXml : ITipoBandejaSalida
    {
        private string ruta = "";

        private const string NOMBRE_BANDEJA = "BandejaSalidaXML";

        public void EscribirMensaje(Mensaje mensaje)
        {
            if (!String.IsNullOrEmpty(ruta))
            {
                if (Directory.Exists(ruta))
                {
                    XmlDocument xml = new XmlDocument();
                    XmlElement mensajeNode = xml.CreateElement("mensaje");
                    mensajeNode.SetAttribute("titulo", mensaje.titulo);
                    xml.AppendChild(mensajeNode);

                    XmlElement atributosNode = xml.CreateElement("atributos");

                    foreach (Atributo a in mensaje.atributos)                    
                    {
                        XmlElement atributoNode = xml.CreateElement("atributo");
                        atributoNode.SetAttribute("nombre",a.nombre);
                        atributoNode.SetAttribute("tipo", a.tipo);
                        atributoNode.SetAttribute("valor", a.valor);
                        atributosNode.AppendChild(atributoNode);
                    }

                    mensajeNode.AppendChild(atributosNode);

                    string[] listaXmls = Directory.GetFiles(ruta, "*.xml", SearchOption.TopDirectoryOnly);
                    string idMensaje = Convert.ToString((listaXmls.Length + 1));
                    xml.Save(ruta + "\\" + "Mensaje" + idMensaje + ".xml");
                }
            }
        }

        public string getConfiguracion()
        {
            return ruta;
        }

        public void setConfiguracion(string c)
        {
            ruta = c;
        }

        override
        public string ToString()
        {
            return NOMBRE_BANDEJA;
        }

        public UserControl getVentanaConfiguracion()
        {
            VentanaConfiguracion aRetornar = new VentanaConfiguracion();
            return aRetornar;
        }

        //Procedimiento que recibe una instancia del usercontrol "VentanaConfiguracion"
        //y retorna la configuracion
        public string getConfiguracionFormulario(UserControl uc)
        {
            string aRetornar;
            VentanaConfiguracion uc2 = (VentanaConfiguracion)uc;
            aRetornar = uc2.getConfiguracion();
            return aRetornar;
        }

        public void setConfiguracionFormulario(UserControl uc, string conf)
        {
            VentanaConfiguracion ventana = (VentanaConfiguracion)uc;
            ventana.setConfiguracion(conf);
        }
    }
}
